// Extensão css para jProton.Set.
/**#@+ @extends css */
set.extend(/** @lends jProton.Set.prototype */ {

  '@extension': {'css': '0.3.0a'},

  /**
   * Verifica se o primeiro elemento selecionado possui uma determinada classe.
   *
   * @param {String}  name   Nome da classe.
   * @return {Boolean}
   */
  hasClass: function(name) {
    return this.e[0] ? 
      // cópia de performance de jProton.hasClass(e, name)
      (' '+this.e[0].className+' ').indexOf(' '+name+' ') != -1 : 
      undefined;
  },

  /**
   * Adiciona a classe a todos elementos selecionados.
   * 
   * @param {String}  name   Nome da classe.
   * @return {jProton.Set}
   */
  addClass: function(name) {
    for(var i=0,e=this.e,ei;ei=e[i];i++)
      element.addClass(ei, name);

    return this;
  },

  /**
   * Remove a classe de todos os elementos selecionados.
   * 
   * @param {String}  name   Nome da classe.
   * @return {jProton.Set}
   */
  removeClass: function(name) {
    for(var i=0,e=this.e,ei;ei=e[i];i++)
      element.removeClass(ei, name);

    return this;
  },

  /**
   * Alterna o uso de uma classe em todos os elementos selecionados.
   * 
   * @param {String}  name   Nome da classe.
   * @return {jProton.Set}
   */
  toggleClass: function(name) {
    for(var i=0,e=this.e,ei;ei=e[i];i++)
      element.toggleClass(ei, name);

    return this;
  },

  /**
   * Retorna o valor da propriedade de estilo do primeiro elemento selecionado.
   * 
   * @param {String}  name   Nome da propriedade de estilo.
   * @return {Value}   
   */

  /**
   * Altera os valores de um conjunto de propriedades de todos os elementos 
   * selecionados.
   * 
   * @param {Object}  properties   Objeto contendo pares de propriedade/valor.
   * @return {jProton.Set}
   */

  /**
   * Altera o valor da propriedade de estilo de todos os elementos selecionados.
   * Baseado em: [[http://www.quirksmode.org/dom/getstyles.html|Quirksmode]].
   * 
   * @param {String}  name   Nome da propriedade de estilo.
   * @param {String}  val    Valor da propriedade.
   * @return {jProton.Set}
   */
  css: function(name, val) {
    if (val) {
      // Processa $().css(name, val)
      for(var i=0,e=this.e,ei;ei=e[i];i++)
        element.css(ei, name, val);

      return this;
    } else
      // Processa $().css(name)
      return element.css(this.e[0], name);
  }

  /**#@-*/
});
